When is one thing equal to some other thing?

For those of you still looking, here's a fun introduction to Category Theory by Barry Mazur.

Towards Applicative Relational Programming

This 10-page 1992 article, Towards Applicative Relational Programming by Ibrahim & van Enden, has just appeared on ArXiv, which asked the question of how to combine functional and relational programming.


This is fairly well-trodden ground now, with approaches such as Miller's lambda-Prolog and Saraswat's constraint-lambda calculus being well establsihed, but this paper offers a rather different approach, based on the Henkin-Monk-Tarski approach of cylindric algebras, which were devised as a means of formalising predicate logic in equational logic - I'm familiar with them in the context of modal logic, since they offer a means for handling quantifiers by means of modalities, where [] is used to express forall and <> is used to express exists.


The treatment is nice, and is recommended to LtUers interested in having an arsenal of techniques for bridging the declarative divide.

LiteratePrograms wiki

Derrick Coetzee has recently announced an interesting new wiki called LiteratePrograms. LP is based on Wikipedia's MediaWiki system, but adds some capabilities from the noweb literate programming system. Quoting from the LP website:
LiteratePrograms is a unique wiki where every article is simultaneously a document and a piece of code that you can download, compile, and run by simply using the "download code" tab at the top of every article. See Insertion sort (C, simple) for a simple example. To date we have 3 articles.
Based on Donald Knuth's concept of literate programming, LiteratePrograms is a collection of code samples displayed in an easy-to-read way, collaboratively edited and debugged, and all released under the liberal MIT/X11 License (see LiteratePrograms:Copyrights) so that anyone can use our code and text for any purpose.
While it's obviously just getting started, and thus has fairly minimal content, I think that the idea behind LP is an interesting one. It seems like there's a lot of potential for the LP wiki to become both a handy resource for (well-documented) code-snippets, and a great educational tool.

Life and Times of Anders Hejlsberg

This episode of “Behind the Code” features industry luminary, Anders Hejlsberg. Before coming to Microsoft in 1996 he was well noted for his work as the principal engineer of Turbo Pascal and the chief architect of the Delphi product line. At Microsoft he was architect for the Visual J++ development system and the Windows Foundation Classes (WFC). Promoted to Distinguished Engineer in 2000, Anders is the chief designer of the C# programming language and a key participant in the development of Microsoft’s .NET framework.

This isn't a technical interview but it is fun none the less. Anders describes, for example, how his team works and how their meetings are organized.

When asked about the future of C#, Andres mentions better data integration (e.g., LINQ etc.), and the mismatch between programming languages and database programming. These are issues we discussed here many times, of course. As regards the future of programming languages in general, we are told that more declarative languages (or language features, I suppose) are going to appear. I quite suspect that different programmers have different ideas of what declarative programming really means, and I think question is worth exploring.

It's nice to hear Andres say that OOP is a tool, and not a religion, and mention that there are useful ideas in language such as Haskell, ML, Lisp and Scheme. I guess we weren't wasting our time after all...

Do us proud, Dave!

Brendan Eich clues us in about the future of Javascript and, lo and behold, who do we find helping the process along? Our very own Dave!

I'm happy to announce that we are now working with Dave Herman, a fourth year graduate student at Northeastern, of PLT and lambda-the-ultimate renown, whom I invited as an expert to help ECMA TG1 develop sound specifications for critical parts of ECMAScript Edition 4 (ES4), also known as JavaScript 2 (JS2).

A Tail-Recursive Machine with Stack Inspection

A Tail-Recursive Machine with Stack Inspection. John Clements and Matthias Felleisen, TOPLAS 2004.

Security folklore holds that a security mechanism based on stack inspection is incompatible with a global tail call optimization policy... In this article, we prove this widely held belief wrong. ... Our machine is surprisingly simple and suggests that tail calls are as easy to implement in a security setting as they are in a conventional one.

I don't believe we've discussed this paper before, although it was mentioned in this thread. Tail calls have been a topic of discussion here several times. [1][2][3]

Tail call elimination decorator in Python

Features of a programming language, whether syntactic or semantic, are all part of the language's user interface. And a user interface can handle only so much complexity or it becomes unusable. This is also the reason why Python will never have continuations, and even why I'm uninterested in optimizing tail recursion.

Thus spoke Guido - as LtU readers already know.

Now, not even four weeks later, it has become clear that turning tail recursions into iterations can be achieved by an innocent little decorator in pure Python. No Rube Goldberg machine(s) in sight.

Jon Udell: Multi-language runtimes

Not a technical perspective, but one that might be important none the less,

First, will Sun help the Java VM realize its multi-language potential? Second, will the dominant .NET VM for non-Windows platforms be a Microsoft product (WPF/E) or an open source project (Mono)?

Leak Free Javascript Closures

I haven't read this really, but it's in the queue for such a long time I might as well pass it along...